#ifndef ASTNODE_FUNCDEFSTATEMENT_H
#define ASTNODE_FUNCDEFSTATEMENT_H
#include <vector>
#include "AstNode.h"

class AstNodeFuncDefParm : public AstNode
{
  public:
    AstNodeFuncDefParm(const char * name, const char * type);

    virtual void dump(int level);
    virtual int  compile(ClassFile * klass, MethodInfo * method);
    virtual void compile(class CompileVisitor *);
  private:
    char * name;
    char * type;
};

class AstNodeFuncDefParmList : public AstNode
{
  public:
    AstNodeFuncDefParmList();
    virtual void dump(int level);
    virtual int  compile(ClassFile * klass, MethodInfo * method);
    virtual void compile(class CompileVisitor *);
    
  private:
    std::vector<AstNodeFuncDefParm*>parms;

};

class AstNodeFuncDefStatement : public AstNode 
{
  public:
    AstNodeFuncDefStatement();
    virtual void dump(int level);
    virtual int  compile(ClassFile * klass, MethodInfo * method);
    virtual void compile(class CompileVisitor *);
};

#endif
